package com.lft.freshordering.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lft.freshordering.entity.Audit;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper 接口
 * </p >
 *
 * @author tyhxzy
 * @since 2024-12-02
 */
public interface AuditMapper extends BaseMapper<Audit> {
    //添加审核门店信息
    @Insert("INSERT \n" +
            "INTO audit(shop_name,user_id,phone,address,user_name,shenhetime)VALUES(#{shopName},#{userId},#{phone},#{address},#{userName},CURRENT_TIMESTAMP)")
    int addAudit(Audit audit);

    /**
     * 根据ID选择审计记录
     *
     * @param id 审计记录的唯一标识符
     * @return 返回找到的审计记录，如果不存在则返回null
     */
    Audit selectAudit(Integer id);

    /**
     * 更新审计记录的信息
     *
     * @param audit 要更新的审计记录对象，包含修改后的信息
     * @return 返回更新操作的结果，1表示成功，其他值表示失败
     */
    //
    int updateAudit(Audit audit);

    //查询所有审核信息
    @Select("select * from audit")
    List<Audit> selAll();
//    根据商户信息ID查询审核信息
    @Select("select * from audit where user_id=#{userId}")
    Audit selectByUserId(Integer userId);

//    //根据商户信息ID查审核状态
//    @Select("select audit_id from audit where user_id=#{userId}")
//    Audit selectAuditId(Integer userId);


    //修改审核状态(点击通过按钮调用的方法)
    @Update("UPDATE audit SET review_status = 1 WHERE audit_id = #{auditId}")
    Integer updateAuditStatus(Integer auditId);
    //修改审核状态(点击驳回按钮调用的方法)

    @Update("UPDATE audit SET review_status = #{reviewStatus},cause = #{cause} WHERE audit_id = #{id}")
    Integer updateAuditStatusToReject(Integer id, Integer reviewStatus, String cause);

    //根据商品名称查询审核信息(离谱的方法)
    @Select("SELECT * FROM audit WHERE shop_name = #{shopName}")
    Audit selectAuditIdByName(String shopName);

    //    查询所有的审核状态
    @Select("select review_status from audit where user_id=#{id}")
    Audit selectAuditStatus(Integer id);

    @Select("select orders.id,orders.paystate ,orders.price,orders.realpay,audit.shop_name,audit.address from audit,orders where orders.uid=audit.user_id and paystate != 0")
    List<Map> selectauditdd();

    @Update("update orders set paystate=1 where id=#{id}")
    int updateAuditStatusByUserId(Integer id);
    @Update("update orders set paystate=3 where id=#{id}")
    int updateAuditStatusByUserId2(Integer id);
    @Select("select audit.shop_name,audit.address,orders.id,orders.paystate ,orders.price,orders.realpay from audit,orders where orders.uid=audit.user_id and orders.id=#{id} ")
    Map selectauditdd2(Integer id);
}